8-1 جبررابطه ای يک زبان پرس و جو است که عمليات روی پايگاه داده را توسط نمادهايی به صورت فرمولی بيان می کند. election Projection Cartesian Product et Union et Difference Cartesian Product et Intersection Division Join مثال کاربردی algebra) (relational عمليات روی پايگاه داده را به صورت فرمول بيان می کند. توسط Codd به عنوان مبنای زبان های پرس و جوی پايگاه داده ارائه شد. عملگرهای توسط نمادهائی نمايش داده می شوند. شش عملگر مبنائی که توسط Codd تعريف شد عبارتند از: اکثر عملگرهای ديگر توسط اين عملگرها تعريف می شوند. مهمترين آنها عبارتند از : election: σ Projection: Cartesian Product: et union: et difference: ename: et Intersection: Division: Natural Join: هر عملگر روی يک يا دو رابطه به عنوان ورودی عمل کرده و يک رابطه جديد را به عنوان نتيجه توليد می کنند. election عملگر انتخاب (selection) يک عملگر يکتائی است که سطرهائی از يک رابطه را انتخاب می کند. فرم کلی آن به صورت زير است : خروجی عملگر selection رابطه ای است شامل سطرهايی از رابطه که شرط موردنظر در آنها برقرار بوده است. کارديناليتی جدول حاصل کمتر يا مساوی جدول اوليه است اما درجه آنها تفاوت نمی کند. ( )شرطσ (or) و ~(not) ساخته شود. (and) < > شرط می تواند توسط عالئم =
8-2 Projection عملگر پروژه (projection) است : عملگر يکتائی که ستون هائی از يک رابطه را انتخاب می کند. شکل کلی آن به صورت زير a1,,an() a1,,an مجموعه از اسامی صفات خاصه است که از رابطه انتخاب می شوند. نتيجه عمل پروژه جدولی شامل کليه تاپل های رابطه است که محدود به مجموعه صفات مشخص شده است. اگر در جدول حاصل سطرهايی مشابه هم باشند با هم ترکيب می شوند و سطرهای تکراری حذف می شوند. معموال يک کليد کانديد را نگه می داريم تا کارديناليتی حفظ شود. درجه جدول حاصل کمتر يا مساوی جدول اوليه است. Cartesian Product ضرب دکارتی Product) (Cartesian عملگری است که روی دو جدول کار می کند و جدول جديدی را می دهد که که يک رکورد برای هر جفت رکورد ممکن از هر دو جدول دارد. فرم کلی آن به صورت زير است : رکوردهای های رابطه با کليه رکوردها رابطه به اين صورت ترکيب می شوند که اولين سطر از رابطه در کنار اولين سطر رابطه در جدول حاصل قرار می گيرد و به همين ترتيب تا آخرين سطر اضافه می شود. همين عمل مجددا برای سطرهای ديگر رابطه تکرار می شود. در جدول حاصل احتمال تکرار شدن ستون ها وجود دارد. درجه جدول حاصل برابر مجموع درجات دو جدول و کارديناليتی آن برابر حاصل ضرب کارديناليتی دو رابطه می باشد. ضرب دکارتی در متفاوت از آنچه درتئوری مجموعه است تعريف می شود. et Union عملگر اجتماع (union) صورت زير است : يک عملگر دوتائی است که مشابه عمل اجتماع در تئوری مجموعه ها عمل می کند. فرم کلی آن به اجتماع دو رابطه و جدولی است شامل کليه تاپل های رابطه و رابطه.
8-3 دو رابطه ای که روی آنها عمل اجتماع انجام می شود بايد همساز (compatible) خاصه يکسان باشند. باشند يعنی بايد دارای مجموعه صفات درجه جدول حاصل تفاوتی نمی کند اما کارديناليتی آن برابر با مجموع سطرهای هردو جدول منهای سطرهای مشترک است. Difference عملگر تفاضل (difference) صورت زير است : يک عملگر دو تائی است و مشابه عمل تفاضل در تئوری مجموعه ها است. فرم کلی آن به - تفاضل و جدولی است که شامل کليه تاپل هايی است که در هست ولی در نيست. سطر اول رابطه با کليه سطرهای رابطه مقايسه می شود هر کدام که در رابطه نبود در جدول حاصل قرار می گيرد. دو رابطه ای که روی آنها عمل تفاضل انجام می شود بايد همساز باشند. کارديناليتی جدول حاصل برابر کارديناليتی رابطه منهای سطرهای مشابه است. درجه آنها تفاوتی نمی کند. ename
8-4 عملگر تغيير نام (rename) يک عملگر يکتائی است که برای تغيير نام صفات خاصه يک رابطه يا نام خود رابطه استفاده می شود. تغيير نام به صورت نوشته می شود : A(B) نتيجه عمل تغيير نام روی رابطه B همان رابطه B است با نام جديد A به بيان ديگر رابطه B را به A تغيير نام می دهد. Intersection عملگر اشتراک (intersection) بر اساس عمل اشتراک مجموعه ها می باشد. فرم کلی آن به صورت زير است : جدول حاصل از اشتراک دو رابطه و جدولی است شامل کليه تاپل هايی که در هر دو جدول وجود دارد. دو رابطه ای که روی آنها عمل اشتراک انجام می شود بايد همساز باشند. Division عملگر تقسيم (division) روی دو رابطه انجام می شود. فرم کلی آن به صورت زير است : حاصل تقسيم رابطه بر رابطه رابطه ای است شامل کليه تاپل هائی از برای صفات خاصه مشترک در رابطه نيز وجود دارد. در جدول حاصل صفات خاصه ای از اضافه می شود که در نيست. عمل تقسيم توسط عملگر های مبنائی به صورت زير شبيه سازی می شود:
8-5 T := a1,...,an() U := T - V := a1,...,an(u) W := a1,...,an() V Join الحاق طبيعی Join) (Natural يک عملگر دوتائی است که به صورت زير نوشته می شود: نتيجه الحاق طبيعی رابطه ای است شامل کليه ترکيبات تاپل های و است که صفات خاصه مشترک آنها برابر است. الحاق دو رابطه زير مجموعه ای از ضرب دکارتی است. نتيجه ضرب دکارتی بدون هيچ شرطی است و ممکن است اطالع جديدی را ندهد. ولی عملگر الحاق با استفاده از کليد خارجی دو رابطه را با هم ترکيب کرده و با حذف سطرهائی از ضرب دکارتی اطالع معنی داری را از ترکيب جداول می دهد. دو رابطه که در الحاق شرکت می کنند بايد دارای صفت خاصه مشترکی باشند. مثال. جدول Loan و Borrower که به ترتيب حاوی مشخصات وام ها و وام گيرنده ها هستند را درنبظر بگيريد. و Borrower مثال. در جدول Borrower مقدار وام آنها را می دهد. کليد خارجی فيلد Loan_no است. الحاق جداول Loan اسامی وام گيرنده ها و وقتی عمل الحاق روی دو رابطه انجام می شود بعضی داده ها از دست می روند. بعضی وقت ها اين داده ها اطالعات مفيدی را دارند. الحاق خارجی join) (outer جداول را به نحوی ترکيب می کند که داده های مورد نظر در جدول نتيجه باقی بمانند. بسته به اطالعاتی که حفظ می شود سه نوع الحاق خارجی وجود دارد : left outer join right outer join full outer join left outer join نتيجه الحاق چپ مجموعه کليه تاپل های رابطه و است که صفات خاصه مشترک آنها يکسان است بعالوه تاپل هايی در که برای صفت خاصه مشترک همنظيری در ندارد. برای اين تاپل ها در صفات خاصه ای که از اضافه می شوند مقدار nullقرارداده می شود. الحاق چپ به صورت زير نوشته می شود:
8-6 مثال. الحاق خارجی چپ دو جدول Loan و Borrower به صورت زير می شود: الحاق چپ با استفاده ازالحاق طبيعی و اجتماع بدست می آيد: = ( ) right outer join الحاق راست مشابه الحاق چپ است با اين تفاوت که کليه مقادير رابطه سمت راست عملگر الحاق در نتيجه ظاهر می شود. مثال. الحاق خارجی راست دو جدول Loan و Borrower به صورت زير می شود : الحاق چپ با استفاده ازالحاق طبيعی و اجتماع بدست می آيد: = ( ) full outer join الحاق خارجی کامل يا به طور خالصه الحاق خارجی الحاق خارجی چپ و راست را با هم ترکيب می کند. نتيجه الحاق کامل خارجی مجموعه کليه ترکيبات تاپل های و است که صفات خاصه مشترک آنها برابر است بعالوه تاپل هائی در که در نيستند و تاپلهای که در وجود ندارند. الحاق خارجی دو رابطه و به صورت زير نوشته می شود: مثال. الحاق خارجی دو جدول Loan و Borrower به صورت زير می شود : الحاق خارجی کامل با اجتماع الحاق چپ و الحاق راست بدست می آيد:
8-7 = ( ) ( ) = ( ) مثال های کاربردی مثال بانک. رابطه های زير را درنظر بگيريد: سوال 1. کليه شماره وام هائی که مقدارشان از 1200 بيشتر است را پيدا کنيد. سوال 2. کليه مشتريانی که يک وام يک حساب يا هردو را پيدا کنيد. branch (branch_name, branch_city, assets) customer (customer_name, customer_street, customer_city) account (account_number, branch_name, balance) loan (loan_number, branch_name, amount) depositor (customer_name, account_number) borrower (customer_name, loan_number) loan_number(σamount > 1200 (loan)) customer_name (borrower) customer_name (depositor) سوال 3. کليه مشتريانی که يک وام و يک حساب در بانک دارند را پيدا کنيد.. customer_name (borrower) customer_name (depositor) سوال 4. اسامی کليه مشتريانی که يک وام در شعبه Perryridge دارند را پيدا کنيد.. customer_name (σbranch_name="perryridge"(borrower loan)) سوال 5. اسامی کليه مشتريانی که يا حساب دارند يا وام گرفته اند )ولی نه هردو( را پيدا کنيد. customer_name ((σ account_number is null or loan_number is null ( depositor borrower)) سوال 6. اسامی کليه مشتريانی که يک وام در شعبه Perryridge دارند ولی هيچ حسابی در هيچ شعبه ندارند را پيدا کنيد.. customer_name (σbranch_name="perryridge" (borrower loan)) customer_name(depositor)